// 引入解码工具
const { jwtDecode } = require('../utils/jwt')
const adminModel = require("../db/model/adminMode")
// token校验中间件
module.exports = async (req, res, next) => {
  // 先拿到请求头上的token
  const {
    token
  } = req.headers;
  // 对token进行解码(返回一个对象 code代表解码的情况)
  const jwtResult = jwtDecode(token, '666')
  // 解码失败
  if (jwtResult.code === 0) {
    return res.send({
      code: 20000,
      msg: "服务端权限校验解码失败",
      data: null
    })
  }
  // 解码成功,返回的对象中有一个adminName,去数据库中查询status是否为1
  try {
    const findResult = await adminModel.findOne({
      adminName: jwtResult.adminName
    })
    if (findResult.status === 0) {
      return res.send({
        code: 20002,
        msg: '服务端权限校验失败,数据库保存的status异常',
        data: null
      })
    }
    //权限校验通过,继续向下运行
    next();
  } catch (e) {
    console.log("权限控制中:查询status状态出现异常" + e.message);
    res.send({
      code: 20001,
      msg: "权限控制中:查询status状态出现异常" + e.message,
      data: null
    })
  }
}